package com.virtualightning.mvvm.fragments

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.virtualightning.mvvm.R
import com.virtualightning.mvvm.base.BaseFragment
import com.virtualightning.mvvm.widget.SwitchView

/**
 *  Anchor : Create by CimZzz
 *  Time : 2021/1/25 18:04:04
 *  Project : zxs-new
 *  可切换的 Fragment
 */
@Suppress("unused")
abstract class SwitchableFragment : BaseFragment() {
    private lateinit var switchView: SwitchView

    ///////////////////////////////////////////////////////////////////////////
    // Add by CimZzz on 2021/1/25 下午6:10
    // 创建 SwitchableView 作为 Fragment 的根 View
    ///////////////////////////////////////////////////////////////////////////
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        val customLayoutId = supportCustomLayoutId()
        val switchViewId = supportSwitchViewId()
        return if(customLayoutId == 0 || switchViewId == 0) {
            switchView = inflater.inflate(R.layout.fragment_switchable, container, false) as SwitchView
            configSwitchView(switchView)
            switchView
        } else {
            val rootView = inflater.inflate(customLayoutId, container, false)
            switchView = rootView.findViewById(switchViewId)
            initWithCustomSwitchViewLayout(rootView)
            configSwitchView(switchView)
            rootView
        }

    }

    ///////////////////////////////////////////////////////////////////////////
    // Add by CimZzz on 2021/1/26 下午6:57
    // 显示View
    ///////////////////////////////////////////////////////////////////////////
    fun showView(viewId: Int?): View? {
        return switchView.show(viewId)
    }

    ///////////////////////////////////////////////////////////////////////////
    // Add by CimZzz on 2021/1/25 下午6:10
    // 配置 SwitchableView
    ///////////////////////////////////////////////////////////////////////////
    protected abstract fun configSwitchView(switchView: SwitchView)

    ///////////////////////////////////////////////////////////////////////////
    // Add by CimZzz on 2021/6/14 9:28 上午
    // 自定义 SwitchView 布局
    ///////////////////////////////////////////////////////////////////////////
    protected open fun supportCustomLayoutId(): Int = 0

    ///////////////////////////////////////////////////////////////////////////
    // Add by CimZzz on 2021/6/14 9:28 上午
    // 如果使用自定义 SwitchView 布局，则需要指定 SwitchView Id
    ///////////////////////////////////////////////////////////////////////////
    protected open fun supportSwitchViewId(): Int = 0

    ///////////////////////////////////////////////////////////////////////////
    // Add by CimZzz on 2021/6/14 9:29 上午
    // 如果使用自定义 SwitchView 布局，可以在该方法中进行布局的初始化
    ///////////////////////////////////////////////////////////////////////////
    protected open fun initWithCustomSwitchViewLayout(view: View) {

    }
}